<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>

        function Person() {}
        var p=new Person();
        Person.prototype.sayHi=function(){
            alert("sayHi")
        }
        Person.prototype.name="yangtao";
        p.sayHi()


        var p1=new Person();
        var p2=new Person();


        //有点像静态的
        console.log("p1.name:"+p1.name)
        console.log("p2.name:"+p2.name)
        /**
         * 以下写法的问题是constructor不再指向Person。
         * 指向Object
         */
        Person.prototype = {
            //  constructor:Person,
            name: 'Rick',
            age: 23,
            job: 'it',
            sayABC:function () {
                alert("abc")
            }
        };
       // p.sayABC()
      //  p.sayHi()
     //   可以如上特意设置为Person，但是这样设置的constructor属性的[[Enumerable]]特性值被设置为true，但默认情况下constructor是不可枚举的，所以可以在支持ES5的浏览器中使用如下函数进行设置：
        Object.defineProperty(Person.prototype, 'constructor', {
            enumerable: false,
            value: Person
        });


        console.log(Person.prototype.constructor.name)

    </script>
</head>
<body>
    更简单的语法
</body>
</html>